import React, { useState, CSSProperties } from 'react';
import classNames from 'classnames';
import Transition from '../Transition/transition';

// 按钮类型
export type AlertType = 'success' | 'default' | 'danger' | 'warning';

// 参数接口
export interface AlertProps {
  className?: string;
  message?: string;
  description?: string;
  type?: AlertType;
  style?: CSSProperties;
  closable: boolean;
}

export const Alert: React.FC<AlertProps> = props => {
  const {
    className,
    message,
    type,
    description,
    closable
  } = props;

  const [alertShow, setAlertShow] = useState(true);

  const classes = classNames('origin-alert', className, {
    [`origin-alert-${type}`]: type,
  });

  return (<Transition
    in={alertShow}
    timeout={300}
    animation="zoom-in-top"
  >
    <div>
   <div className={ classes }>
        <div className="origin-alert-content">
          <div className="origin-alert-message">{ message }</div>
          <div className="origin-alert-description">
            { description }
          </div>
        </div>
        {
          closable ? (<button type="button" className="origin-alert-closable" onClick={() => {
            setAlertShow(false);
          } }>
          <svg viewBox="64 64 896 896" focusable="false" data-icon="close" width="1em" height="1em" fill="currentColor" aria-hidden="true">
            <path d="M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z">
            </path>
          </svg>
        </button>) : ''
        }
      </div>
    </div>
  </Transition>)
}

Alert.defaultProps = {
  closable: false,
  type: 'default'
}

export default Alert;